import config
from obj_config import language
import json
import obj_config


class Settings_Kernel:
    def __init__(self) -> None:
        pass

    def messages_awaiting(self) -> None:
        config.time_out_mess_start = 0
        config.time_out_mess_len = 0
        obj_config.communication_obj.event_message()
        config.event_message = "cheek_message"

    def cheek_message(self) -> None:
        config.event_message = "cheek_message"

    def event_message(self) -> None:
        config.event_message = "event_message"

    def none_message(self) -> None:
        config.event_message = ""

    def settings_work_mode(self, params):
        if params == "work_mode_name_sleep":
            self.settings_work_mode = params
        else:
            pass

    def sett_hidden_function(self) -> str:
        if config.hidden_function is True:
            config.hidden_function = False
            return "False"
        elif config.hidden_function is False:
            config.hidden_function = True
            return "True"
        else:
            return ""

    def settings_parms(self, str_func: str) -> str:
        # Голосовая настройка ядра
        try:
            variable = str_func[0 : str_func.rfind("_")]
            variable_value = str_func[str_func.rfind("_") + 1 : len(str_func)]
            if variable_value.find("True") != -1 or variable_value.find("False") != -1:
                variable_value = bool(variable_value)
            elif variable_value[0] in "012356789":
                variable_value = int(variable_value)
            else:
                pass
            setattr(config, variable, variable_value)
            return language["apps=>Apps=>exit_core"]["settings_True"]
        except BaseException:
            return language["apps=>Apps=>exit_core"]["settings_False"]

    def renewal_json(self) -> None:
        # Дописать
        with open("command_dict.json") as f:
            try:
                config.cmds = json.load(f)
            except BaseException:
                config.exit_flag = True

    def sett_add_modules(self) -> str:
        if len(obj_config.service_functions_obj.add_apps()) != 0:
            return "Есть ошибки смотрите log_error"
        else:
            return "Ошибки не обнаружены"

    def sett_meta_data(self) -> str:
        if config.meta_data is True:
            config.meta_data = False
            return "Включён сбор мета данных"
        elif config.meta_data is False:
            config.meta_data = True
            return "Сбор мета данных отключён"
        else:
            return "Включена проверка речи"

    def sett_cheek_say(self) -> str:
        if config.permission_check_speech is True:
            config.permission_check_speech = False
            return "Проверка речи отключена"
        elif config.permission_check_speech is False:
            config.permission_check_speech = True
            return "Включена проверка речи"
        else:
            return "Что-то пошло не так"

    def sett_enabling_activation(self) -> str:
        if config.enabling_activation is True:
            config.enabling_activation = False
            return "Запрет на разрешение на активацию"
        elif config.enabling_activation is False:
            config.enabling_activation = True
            return "Активировано разрешение на активацию"
        else:
            return "Что-то пошло не так"

    def sett_one_func(self) -> str:
        if config.one_func is True:
            config.one_func = False
            return "Активирован запрет списка функций"
        elif config.one_func is False:
            config.one_func = True
            return "Активирован список функций"
        else:
            return "Что-то пошло не так"

    def sett_activ_loop_tags(self):
        if config.tags_decoder_flag is True:
            config.tags_decoder_flag = False
            return "Отключён циклический ввод меток"
        elif config.tags_decoder_flag is False:
            config.tags_decoder_flag = True
            return "Активирован циклический ввод меток"
        else:
            return "Что-то пошло не так"

    def sett_entry_tags_decoder(self):
        if config.decoder_tags_vs_str == "tags":
            config.tags_decoder_flag = "int"
            return "Работа с метками через идекс"
        elif config.tags_decoder_flag == "int":
            config.decoder_tags_vs_str = "tags"
            return "Работа с метками через метки"
        else:
            return "Что-то пошло не так"

    def activ_name(self):
        if config.name_separation is True:
            config.name_separation = False
            return "Активация по имени отключена"
        elif config.name_separation is False:
            config.name_separation = True
            return "Активация по имени включена"
        else:
            return "Что-то пошло не так"

    def sett_func_separation_name(self):
        if config.func_separation_name is True:
            config.func_separation_name = False
            return "Отделение имени от метки"

        elif config.func_separation_name is False:
            config.func_separation_name = True
            return "Функция и метка произносятся вместе"
        else:
            return "Что-то пошло не так"

    def update_moduls(self):
        # Подключить в конфиг
        obj_config.service_functions_obj.restart_modul()
        obj_config.service_functions_obj.json_renewal()
        obj_config.service_functions_obj.restart_modul()
        return "Модули обновлены"
